const express = require('express')
const router = express.Router()
// 导入formdata格式表单数据的包
const multer = require('multer')
// 导入路劲核心模块
const path = require('path')
// 导入验证数据的中间件 
const expressJoi = require('@escook/express-joi') 
// 导入文章的验证模块 
const { add_article_schema } = require('../schema/article')

// 创建 multer 的实例对象，通过 dest 属性指定文件的存放路径
const upload = multer({ dest: path.join(__dirname, '../uploads') })
// 发布新文章
router.post('/add',upload.single('cover_img'),expressJoi(add_article_schema),(req,res)=>{
    // 手动判断是否上传了文章封面 
    if (!req.file || req.file.fieldname !== 'cover_img') return res.send({status:1,message:'文章封面是必选参数！'})
    const articleInfo = { 
        // 标题、内容、状态、所属的分类Id 
        ...req.body, 
        // 文章封面在服务器端的存放路径 
        cover_img: path.join('/uploads', req.file.filename), 
        // 文章发布时间 
        pub_date: new Date(), 
        // 文章作者的Id 
        author_id: req.user.id, 
    }
    const sql = 'insert into ev_articles set ?'
    // 导入数据库操作模块 
    const db = require('../db/index') 
    // 执行 SQL 语句 
    db.query(sql, articleInfo, (err, results) => { 
        // 执行 SQL 语句失败 
        if (err) return res.send({status:1,message:err.message}) 
        // 执行 SQL 语句成功，但是影响行数不等于 1 
        if (results.affectedRows !== 1) return res.send({status:1,message:'文章发布失败！'})
        // 发布文章成功 
        res.send({status:1,message:'发布文章成功'})
    })
})


module.exports = router